Skip to content

Add .NET refactoring skill - #873

Merged
AbhitejJohn merged 57 commits into
mainfrom
add-dotnet-refactoring-skills
Sep 15, 2026
Merged

AbhitejJohn merged 57 commits into
mainfrom
add-dotnet-refactoring-skills

Conversation

@AbhitejJohn

Copy link
Copy Markdown
Collaborator

Summary

Refactoring is a common operation for .NET developers, and a dedicated skill can help agents make these changes in the way .NET teams expect: behavior-preserving, incremental, and validated with build/test gates.

This PR adds two related skills:

  • csharp-refactoring: guides safe C#/.NET refactoring work such as rename, move, extract, inline, split, consolidate/de-duplicate, and modernization while preserving behavior.
  • dotnet-breaking-changes: provides the compatibility guardrails needed when a refactor touches public API, multi-targeting, source-generated/partial code, or InternalsVisibleTo surfaces.

Why these skills

csharp-refactoring focuses on the refactoring workflow itself: establish a green baseline, choose one named operation, find true references, prefer semantics-aware edits, and re-gate after each step. Its reference file expands the operation catalog and maps common refactoring operations to the kinds of changes .NET teams regularly make.

dotnet-breaking-changes covers the .NET-specific surfaces where a change can compile and pass tests while still breaking downstream consumers. Its reference files explain how to inspect and handle:

  • public API gates (PublicAPI.*, ApiCompat, package validation)
  • multi-targeting and #if branches
  • source-generated and partial code
  • friend assemblies via InternalsVisibleTo

Together, the skills let an agent keep refactoring focused on behavior preservation while still checking the .NET compatibility surfaces that matter in real repos.

Validation

  • Added eval coverage for both skills.
  • Included fixture scenarios that exercise rename, extraction, consolidation, public API checks, multi-targeting, generated/partial code, and friend assembly hazards.
  • Ran the skill validator successfully.
  • Verified the eval fixtures build and test successfully in isolated copies.

@github-actions

github-actions Bot commented Jul 8, 2026 •

Copy link
Copy Markdown
Contributor

Skill Coverage Report

Plugin Skill Covered Coverage
⚠️ dotnet setup-local-sdk 4/8 50%
Uncovered: dotnet/setup-local-sdk
  • [Pitfall] dotnet app.dll wrong runtime (line 386)
  • [CodePattern] [guid] (line 104)
  • [CodePattern] [ordered] (line 301)
  • [CodePattern] [pscustomobject] (line 301)

@AbhitejJohn

Copy link
Copy Markdown
Collaborator Author

/evaluate

github-actions Bot added a commit that referenced this pull request Jul 8, 2026
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Skill Validation Results

Skill Scenario Quality Skills Loaded Overfit Verdict
csharp-refactoring Rename a method across its declaration and every caller 3.0/5 → 1.7/5 🔴 ✅ csharp-refactoring; tools: skill, glob / ✅ csharp-refactoring; tools: skill, read_bash, glob ✅ 0.16 ❌ [1]
csharp-refactoring Extract a repeated calculation into a private helper 2.0/5 → 1.7/5 🔴 ✅ csharp-refactoring; tools: grep, skill / ⚠️ NOT ACTIVATED ✅ 0.16 ❌ [2]
csharp-refactoring Consolidate a duplicated block into a single shared helper 1.3/5 → 1.0/5 🔴 ✅ csharp-refactoring; tools: skill, glob / ⚠️ NOT ACTIVATED ✅ 0.16 ❌ [3]
csharp-refactoring Inline a pass-through wrapper and update callers 2.7/5 → 1.0/5 🔴 ✅ csharp-refactoring; tools: skill, bash / ⚠️ NOT ACTIVATED ✅ 0.16 ❌ [4]
csharp-refactoring Merge two near-identical types into one parameterized type 1.0/5 → 1.0/5 ⚠️ NOT ACTIVATED / ✅ csharp-refactoring; tools: bash, read_bash, glob, edit, skill ✅ 0.16 ❌ [5]
csharp-refactoring Decline a framework and package upgrade dressed up as a refactor 1.3/5 → 1.0/5 ⏰ 🔴 ℹ️ not activated (expected) ✅ 0.16 ❌ [6]
csharp-refactoring Decline a new-feature request dressed up as a refactor 4.7/5 → 3.0/5 ⏰ 🔴 ℹ️ not activated (expected) ✅ 0.16 ✅ [7]
csharp-refactoring Keep behavior-changing bug fixes out of a behavior-preserving refactor 3.7/5 ⏰ → 2.3/5 ⏰ 🔴 ℹ️ not activated (expected) ✅ 0.16 ❌ [8]
dotnet-breaking-changes Answer a public-API question before consolidating duplicated parsing 2.0/5 → 1.3/5 🔴 ✅ dotnet-breaking-changes; tools: skill, glob / ⚠️ NOT ACTIVATED ✅ 0.10 ✅ [9]
dotnet-breaking-changes Add behavior to a shipped public member without breaking the contract 3.3/5 → 2.3/5 🔴 ✅ dotnet-breaking-changes; tools: skill / ⚠️ NOT ACTIVATED ✅ 0.10 ❌ [10]
dotnet-breaking-changes Rename a helper referenced from every #if branch of a multi-targeted type 3.0/5 → 3.0/5 ✅ dotnet-breaking-changes; tools: skill / ⚠️ NOT ACTIVATED ✅ 0.10 ✅ [11]
dotnet-breaking-changes Rename a member of a partial type that a generated part references 3.0/5 → 2.0/5 🔴 ✅ dotnet-breaking-changes; tools: skill, glob / ⚠️ NOT ACTIVATED ✅ 0.10 ❌ [12]
dotnet-breaking-changes Add a new public method that must be correct on every target framework 2.0/5 → 1.0/5 🔴 ✅ dotnet-breaking-changes; tools: bash, glob, skill / ⚠️ NOT ACTIVATED ✅ 0.10 ❌ [13]
dotnet-breaking-changes Do not raise breaking-change concerns for a purely internal local rename 5.0/5 → 5.0/5 ℹ️ not activated (expected) ✅ 0.10 ❌ [14]

[1] ⚠️ High run-to-run variance (CV=82%) — consider re-running with --runs 5
[2] ⚠️ High run-to-run variance (CV=87%) — consider re-running with --runs 5
[3] ⚠️ High run-to-run variance (CV=109%) — consider re-running with --runs 5
[4] ⚠️ High run-to-run variance (CV=58%) — consider re-running with --runs 5
[5] ⚠️ High run-to-run variance (CV=265%) — consider re-running with --runs 5. (Isolated) Quality unchanged but weighted score is -15.5% due to: judgment, quality
[6] ⚠️ High run-to-run variance (CV=71%) — consider re-running with --runs 5
[7] ⚠️ High run-to-run variance (CV=122%) — consider re-running with --runs 5. (Isolated) Quality dropped but weighted score is +4.0% due to: tokens (180608 → 105541), tool calls (19 → 11), time (211.0s → 136.3s)
[8] ⚠️ High run-to-run variance (CV=114%) — consider re-running with --runs 5
[9] ⚠️ High run-to-run variance (CV=159%) — consider re-running with --runs 5. (Isolated) Quality dropped but weighted score is +15.2% due to: completion (✗ → ✓), tokens (90688 → 78437)
[10] ⚠️ High run-to-run variance (CV=171%) — consider re-running with --runs 5
[11] ⚠️ High run-to-run variance (CV=105%) — consider re-running with --runs 5
[12] ⚠️ High run-to-run variance (CV=103%) — consider re-running with --runs 5
[13] ⚠️ High run-to-run variance (CV=56%) — consider re-running with --runs 5
[14] ⚠️ High run-to-run variance (CV=106%) — consider re-running with --runs 5

⏰ timeout — run(s) hit the (300s) scenario timeout limit; scoring may be impacted by aborting model execution before it could produce its full output (increase via timeout in eval.yaml)

Model: claude-opus-4.6 | Judge: claude-opus-4.6

🔍 Full Results - additional metrics and failure investigation steps

To investigate failures, paste this to your AI coding agent:

For PR 873 in dotnet/skills, download eval artifacts with gh run download 28962446218 --repo dotnet/skills --pattern "skill-validator-results-*" --dir ./eval-results, then fetch https://raw.githubusercontent.com/dotnet/skills/1b3a5bd13db825237d579a4dd9d2c1dfc87d9953/eng/skill-validator/src/docs/InvestigatingResults.md and follow it to analyze the results.json files. Diagnose each failure, suggest fixes to the eval.yaml and skill content, and tell me what to fix first.

▶ Sessions Visualisation -- interactive replay of all evaluation sessions
📊 Session Analytics (preview) -- aggregated metrics across evaluation sessions

@AbhitejJohn
AbhitejJohn marked this pull request as ready for review July 13, 2026 17:18
Copilot AI lite review requested due to automatic review settings July 13, 2026 17:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds two new .NET-focused skills to the plugins/dotnet plugin—one for behavior-preserving C# refactoring workflows and one for .NET-specific breaking-change/compatibility guardrails—along with eval coverage and fixtures that exercise the key hazards (public API baselines, multi-targeting #if, generated/partial code, and friend assemblies).

Changes:

  • Added csharp-refactoring skill guidance plus an operation catalog reference.
  • Added dotnet-breaking-changes skill guidance plus focused reference docs for the four “hidden surfaces”.
  • Added eval suites + identical lightweight Billing fixture solutions under tests/dotnet/ for both skills; updated CODEOWNERS and dotnet plugin README.
Show a summary per file
File Description
tests/dotnet/dotnet-breaking-changes/tests/Billing.Tests/BillingTests.cs Adds fixture tests used by the breaking-change eval scenarios.
tests/dotnet/dotnet-breaking-changes/tests/Billing.Tests/Billing.Tests.csproj Adds an xUnit test project targeting net10.0 for the breaking-change fixture solution.
tests/dotnet/dotnet-breaking-changes/src/Billing/PublicAPI.Shipped.txt Adds a public API baseline file used by eval prompts/assertions.
tests/dotnet/dotnet-breaking-changes/src/Billing/Pricing.cs Adds pricing/tax types used for refactor/breaking-change exercises.
tests/dotnet/dotnet-breaking-changes/src/Billing/PlatformInfo.cs Adds multi-targeting #if example surface for breaking-change checks.
tests/dotnet/dotnet-breaking-changes/src/Billing/OrderProcessor.cs Adds intentionally-refactorable implementation used by scenarios.
tests/dotnet/dotnet-breaking-changes/src/Billing/Coupons.g.cs.template Adds generator-input template to simulate generated/partial hazards.
tests/dotnet/dotnet-breaking-changes/src/Billing/Coupons.cs Adds hand-authored partial type paired with the generated template.
tests/dotnet/dotnet-breaking-changes/src/Billing/Billing.csproj Adds multi-targeted library project and build-time generation hook.
tests/dotnet/dotnet-breaking-changes/src/Billing/AppSettingsHelper.cs Adds duplicated parsing helpers for public-API consolidation scenarios.
tests/dotnet/dotnet-breaking-changes/Fixture.sln Adds the breaking-change fixture solution container.
tests/dotnet/dotnet-breaking-changes/eval.yaml Adds breaking-change eval scenarios and build/test gates.
tests/dotnet/csharp-refactoring/tests/Billing.Tests/BillingTests.cs Adds fixture tests used by the refactoring eval scenarios.
tests/dotnet/csharp-refactoring/tests/Billing.Tests/Billing.Tests.csproj Adds an xUnit test project targeting net10.0 for the refactoring fixture solution.
tests/dotnet/csharp-refactoring/src/Billing/PublicAPI.Shipped.txt Adds a public API baseline file used by refactoring prompts/assertions.
tests/dotnet/csharp-refactoring/src/Billing/Pricing.cs Adds pricing/tax types used for refactoring exercises.
tests/dotnet/csharp-refactoring/src/Billing/PlatformInfo.cs Adds multi-targeting #if example surface for refactoring checks.
tests/dotnet/csharp-refactoring/src/Billing/OrderProcessor.cs Adds intentionally-refactorable implementation used by scenarios.
tests/dotnet/csharp-refactoring/src/Billing/Coupons.g.cs.template Adds generator-input template to simulate generated/partial hazards.
tests/dotnet/csharp-refactoring/src/Billing/Coupons.cs Adds hand-authored partial type paired with the generated template.
tests/dotnet/csharp-refactoring/src/Billing/Billing.csproj Adds multi-targeted library project and build-time generation hook.
tests/dotnet/csharp-refactoring/src/Billing/AppSettingsHelper.cs Adds duplicated parsing helpers used in refactoring scenarios.
tests/dotnet/csharp-refactoring/Fixture.sln Adds the refactoring fixture solution container.
tests/dotnet/csharp-refactoring/eval.yaml Adds refactoring eval scenarios and build/test gates.
plugins/dotnet/skills/dotnet-breaking-changes/SKILL.md Introduces the breaking-change skill and when/when-not-to-use guidance.
plugins/dotnet/skills/dotnet-breaking-changes/references/source-generation.md Adds detailed guidance for generated/partial code hazards.
plugins/dotnet/skills/dotnet-breaking-changes/references/public-api.md Adds detailed guidance for public API gating and compatibility decisions.
plugins/dotnet/skills/dotnet-breaking-changes/references/multi-targeting.md Adds detailed guidance for multi-targeting and #if branch correctness.
plugins/dotnet/skills/dotnet-breaking-changes/references/internals-visible-to.md Adds detailed guidance for friend-assembly/internal-surface hazards.
plugins/dotnet/skills/csharp-refactoring/SKILL.md Introduces the refactoring skill and a stepwise safety contract.
plugins/dotnet/skills/csharp-refactoring/references/operation-catalog.md Adds a more detailed refactoring operation taxonomy reference.
plugins/dotnet/README.md Updates the dotnet plugin skill list to include the new skills.
eng/known-domains.txt Adds github.com/dotnet/skills to known domains.
.github/CODEOWNERS Adds ownership entries for the new skills and their tests.

Copilot's findings

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 34/34 changed files
  • Comments generated: 0

@AbhitejJohn

Copy link
Copy Markdown
Collaborator Author

/evaluate

Comment thread plugins/dotnet/skills/csharp-refactoring/SKILL.md Outdated
@github-actions github-actions Bot added the waiting-on-author PR state label label Jul 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

👋 @AbhitejJohn — this PR has 1 unresolved review thread(s). When you're ready, please address the feedback and push an update; the triage bot will pick up the next state automatically. (Add the no-stale label to silence further pings.)

@github-actions

Copy link
Copy Markdown
Contributor

Skill Validation Results

Skill Scenario Quality Skills Loaded Overfit Verdict
csharp-refactoring Rename a method across its declaration and every caller 3.0/5 → 1.0/5 🔴 ✅ csharp-refactoring; tools: skill, glob / ✅ csharp-refactoring; tools: skill, read_bash, glob, stop_bash ✅ 0.17 ❌
csharp-refactoring Extract a repeated calculation into a private helper 2.0/5 → 1.7/5 🔴 ✅ csharp-refactoring; tools: grep, skill / ✅ csharp-refactoring; tools: grep, read_bash, skill ✅ 0.17 ✅ [1]
csharp-refactoring Consolidate a duplicated block into a single shared helper 2.0/5 → 1.7/5 🔴 ✅ csharp-refactoring; tools: glob, skill, bash / ⚠️ NOT ACTIVATED ✅ 0.17 ❌ [2]
csharp-refactoring Inline a pass-through wrapper and update callers 2.3/5 → 1.0/5 🔴 ✅ csharp-refactoring; tools: skill, bash / ⚠️ NOT ACTIVATED ✅ 0.17 ❌
csharp-refactoring Merge two near-identical types into one parameterized type 1.3/5 → 1.0/5 🔴 ✅ csharp-refactoring; tools: skill, edit / ⚠️ NOT ACTIVATED ✅ 0.17 ❌ [3]
csharp-refactoring Decline a framework and package upgrade dressed up as a refactor 1.0/5 → 1.0/5 ℹ️ not activated (expected) ✅ 0.17 ❌ [4]
csharp-refactoring Decline a new-feature request dressed up as a refactor 4.0/5 → 5.0/5 🟢 ℹ️ not activated (expected) ✅ 0.17 ❌ [5]
csharp-refactoring Keep behavior-changing bug fixes out of a behavior-preserving refactor 2.3/5 ⏰ → 3.3/5 ⏰ 🟢 ℹ️ not activated (expected) ✅ 0.17 ❌ [6]
dotnet-breaking-changes Answer a public-API question before consolidating duplicated parsing 2.3/5 → 2.3/5 ✅ dotnet-breaking-changes; tools: glob, skill / ⚠️ NOT ACTIVATED ✅ 0.12 ✅ [7]
dotnet-breaking-changes Add behavior to a shipped public member without breaking the contract 2.7/5 → 2.3/5 🔴 ⚠️ NOT ACTIVATED ✅ 0.12 ❌ [8]
dotnet-breaking-changes Rename a helper referenced from every #if branch of a multi-targeted type 3.3/5 → 2.7/5 🔴 ✅ dotnet-breaking-changes; tools: skill / ⚠️ NOT ACTIVATED ✅ 0.12 ❌ [9]
dotnet-breaking-changes Rename a member of a partial type that a generated part references 1.7/5 → 1.7/5 ⚠️ NOT ACTIVATED ✅ 0.12 ❌ [10]
dotnet-breaking-changes Add a new public method that must be correct on every target framework 2.0/5 → 2.0/5 ⚠️ NOT ACTIVATED ✅ 0.12 ❌ [11]
dotnet-breaking-changes Do not raise breaking-change concerns for a purely internal local rename 4.7/5 → 5.0/5 🟢 ℹ️ not activated (expected) ✅ 0.12 ✅ [12]

[1] ⚠️ High run-to-run variance (CV=214%) — consider re-running with --runs 5. (Isolated) Quality dropped but weighted score is +1.7% due to: tokens (79654 → 66925), time (82.4s → 64.0s)
[2] ⚠️ High run-to-run variance (CV=177%) — consider re-running with --runs 5
[3] ⚠️ High run-to-run variance (CV=895%) — consider re-running with --runs 5
[4] ⚠️ High run-to-run variance (CV=98%) — consider re-running with --runs 5. (Isolated) Quality unchanged but weighted score is -17.3% due to: judgment, quality
[5] ⚠️ High run-to-run variance (CV=379%) — consider re-running with --runs 5. (Isolated) Quality improved but weighted score is -0.9% due to: tokens (151034 → 171934)
[6] ⚠️ High run-to-run variance (CV=404%) — consider re-running with --runs 5. (Plugin) Quality improved but weighted score is -71.1% due to: quality, judgment, tokens (212959 → 255721)
[7] ⚠️ High run-to-run variance (CV=337%) — consider re-running with --runs 5
[8] ⚠️ High run-to-run variance (CV=1202%) — consider re-running with --runs 5
[9] ⚠️ High run-to-run variance (CV=97%) — consider re-running with --runs 5
[10] ⚠️ High run-to-run variance (CV=339%) — consider re-running with --runs 5. (Isolated) Quality unchanged but weighted score is -48.4% due to: judgment, quality
[11] ⚠️ High run-to-run variance (CV=213%) — consider re-running with --runs 5. (Isolated) Quality unchanged but weighted score is -15.4% due to: judgment, quality
[12] ⚠️ High run-to-run variance (CV=215%) — consider re-running with --runs 5

⏰ timeout — run(s) hit the (300s, 600s) scenario timeout limit; scoring may be impacted by aborting model execution before it could produce its full output (increase via timeout in eval.yaml)

Model: claude-opus-4.6 | Judge: claude-opus-4.6

🔍 Full Results - additional metrics and failure investigation steps

To investigate failures, paste this to your AI coding agent:

For PR 873 in dotnet/skills, download eval artifacts with gh run download 29270232281 --repo dotnet/skills --pattern "skill-validator-results-*" --dir ./eval-results, then fetch https://raw.githubusercontent.com/dotnet/skills/a5265d860095cbd1b989dcaa451c1716de027d77/eng/skill-validator/src/docs/InvestigatingResults.md and follow it to analyze the results.json files. Diagnose each failure, suggest fixes to the eval.yaml and skill content, and tell me what to fix first.

▶ Sessions Visualisation -- interactive replay of all evaluation sessions
📊 Session Analytics (preview) -- aggregated metrics across evaluation sessions

@JanKrivanek JanKrivanek left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since the skills have nontrivial size - the main concern now is overlap between the two skills + cross-loading cost. csharp-refactoring instructs the agent to also load dotnet-breaking-changes, and the two share material ("stop and escalate," public API, forwarders, partial/generated). The split is defensible (breaking-changes is meant to apply to features/fixes too, not just refactors), but loading two long skills for one refactor is a real context cost that the evals don't yet justify.

AbhitejJohn added a commit that referenced this pull request Jul 17, 2026
Trim study for PR #873: csharp-refactoring-trim is a ~30% shorter rewrite of csharp-refactoring (drops When-to-use/Inputs/Outputs boilerplate + verbose LSP launch prose, compresses the dbc-overlapping hazards section) while preserving every rubric-rewarded behavior. Adds a 'trimmed' experiment arm and bumps runs to 3 so CI generates baseline/skilled/trimmed trajectories for local cross-family re-judging. Eval-only scratch branch; not part of the PR.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 3c9f9823-7f2f-4f7d-9d1b-f2b9e7a20c60
@github-actions

Copy link
Copy Markdown
Contributor

👋 @AbhitejJohn — this PR has 1 unresolved review thread(s). When you're ready, please address the feedback and push an update; the triage bot will pick up the next state automatically. (Add the no-stale label to silence further pings.)

AbhitejJohn added a commit that referenced this pull request Jul 17, 2026
Robustness probe for the csharp-refactoring trim: all prior CI trajectories
were executed by claude-opus-4.6. Flip executor to gpt-5.5 (GPT family) and
CI judge to claude-opus-4.8 so the (executor, judge) pair stays cross-family.
Tests whether trimmed-vs-current non-inferiority holds under a different model
family. Eval-branch only; not on PR #873.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3c9f9823-7f2f-4f7d-9d1b-f2b9e7a20c60
AbhitejJohn added a commit that referenced this pull request Jul 20, 2026
Closes the 'refactoring-only endpoint too narrow' risk flagged by the
cross-family rubber-duck. Adds two boundary stimuli never used in trim tuning:
  9. Separate a smuggled behavior change from a requested rename (rename +
     smuggled 10%->12% discount change) -> should separate/flag, not bundle.
 10. Recognize a behavior-changing simplification is not a refactor (remove
     free-shipping-over-\ rule under a 'cleanup' framing) -> should not
     silently change observable behavior.
Executor reverted to claude-opus-4.6 / judge gpt-5.5 (re-judge) to match the
stringent Confirm A family where boundary behavior looked weakest.
Eval-branch only; not on PR #873.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3c9f9823-7f2f-4f7d-9d1b-f2b9e7a20c60
@github-actions

Copy link
Copy Markdown
Contributor

👋 @AbhitejJohn — this PR has 1 unresolved review thread(s). When you're ready, please address the feedback and push an update; the triage bot will pick up the next state automatically. (Add the no-stale label to silence further pings.)

Copilot AI review requested due to automatic review settings July 22, 2026 06:10
@AbhitejJohn

Copy link
Copy Markdown
Collaborator Author

@JanKrivanek — fair concern, thanks. I took the size + cross-loading cost seriously and did two things: trimmed both skills and ran a breadth eval to confirm the trims don't cost quality.

Size (SKILL.md bodies; the description frontmatter is unchanged, so activation/routing is held constant and only the in-context body shrank):

Skill Before After Δ
csharp-refactoring 12,617 ch / 193 ln 5,953 ch / 85 ln −53%
dotnet-breaking-changes 8,156 ch / 129 ln 6,425 ch / 98 ln −21%

Combined the two bodies drop ~40% (20.8k→12.4k chars), which directly cuts the "load two long skills for one refactor" cost you flagged. I removed duplicated prose — the When to use / When NOT to use / Related skills lists (already encoded in the description's USE FOR / DO NOT USE FOR) and the overlapping "stop and escalate" / hidden-surface narration that was repeated across both skills — while keeping the inspect-first procedure, the four hidden-surface sections, escalation, and all reference files.

Eval — does the trim hurt? 5 executor families (opus-4.8, gpt-5.5, sonnet-4.6, haiku-4.5, mai-flash), a 2-family judge ensemble (gpt-5.5 + claude-opus-4.8), blinded arm order, n=5, with a negative-control scenario per skill:

  • vs no-skill: both trimmed skills post a non-negative quality delta on all 5 families under both judges; reliably positive (95% bootstrap CI excludes 0) on opus-4.8 and gpt-5.5, directional-positive/flat on the rest. Negative controls stay ~0 — the skills don't over-trigger on work that isn't a compatibility hazard.
  • vs the previous larger versions: no family is reliably degraded by the trim. For dotnet-breaking-changes, gpt-5.5 and haiku-4.5 actually favor the smaller version (+0.13/+0.16 mean, CI>0); opus/mai flat; sonnet slightly negative but inconclusive. For csharp-refactoring the trim also avoids a mild mai regression the larger version showed.

Honest caveats: single self-authored fixture suite, small scenario counts (6 for dbc), and CIs are bootstrapped over trials — so treat the sub-significant deltas as suggestive rather than proof of broad generalization. I'm not claiming formal non-inferiority, only that the smaller versions hold up at least as well as the larger ones across every family I could measure.

On the split: I kept it deliberately (breaking-changes is meant to apply to features/fixes, not only refactors), but the shared material is now much thinner, so cross-loading is meaningfully cheaper. Re-triggering /evaluate on the pushed trims below.

@AbhitejJohn

Copy link
Copy Markdown
Collaborator Author

/evaluate

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 34/34 changed files
  • Comments generated: 2

Comment thread tests/dotnet/dotnet-breaking-changes/src/Billing/Billing.csproj Outdated
Comment thread tests/dotnet/csharp-refactoring/src/Billing/Billing.csproj
@github-actions

Copy link
Copy Markdown
Contributor

❌ Evaluation failed. View workflow run

Copilot AI review requested due to automatic review settings July 23, 2026 07:10
AbhitejJohn and others added 18 commits September 15, 2026 09:18
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8c45529b-2515-483d-9e51-e6c0b7cb6852
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8c45529b-2515-483d-9e51-e6c0b7cb6852
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8c45529b-2515-483d-9e51-e6c0b7cb6852
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8c45529b-2515-483d-9e51-e6c0b7cb6852
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8c45529b-2515-483d-9e51-e6c0b7cb6852
- Updated the skill description to clarify usage and restrictions for refactoring requests.
- Added new test cases for preserving serialized contracts in CustomerProfile.
- Introduced CustomerProfile class to support new test scenarios.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Clarify mixed-request classification, add a real shipped-wrapper caller, and strengthen deterministic fixture and delegation guards.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8c45529b-2515-483d-9e51-e6c0b7cb6852
Restore the focused one-operation workflow and remove broad worktree restore advice after integrating current main.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8c45529b-2515-483d-9e51-e6c0b7cb6852

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

The missing advertised skill, incorrect experiment label, weak executable-test checks, and stale ownership entries must be addressed.

Get a fresh assessment by requesting another Copilot review.

Review tier: Lite
Findings: 1 Medium severity · 1 Low severity

Open (2)

Comment thread .github/workflows/evaluation.yml Outdated
Comment thread .github/CODEOWNERS Outdated
Move target discovery into a tested PowerShell script so GitHub Actions can parse and dispatch the workflow.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8c45529b-2515-483d-9e51-e6c0b7cb6852

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

The README/CODEOWNERS reference unshipped paths, and the extraction grader rejects valid equivalent refactorings.

Review tier: Lite
Findings: 1 Medium severity · 1 Low severity

Open (2)

@github-actions

Copy link
Copy Markdown
Contributor

📊 Skill and Agent Evaluation Results

2 model/target results across 1 target and 2 models — ✅ 2 improved, ➖ 0 not proven improved, ⚠️ 0 invalid or underpowered, ⛔ 0 activation contract failures, 📉 0 preference losses (report only).

Measurement identity: evaluated commit 1f73f159361e5c5a9d20164e00abb903518aea0d; 2 judge models.

Measurement health: 2 expected / 2 observed / 2 written; 0 missing, 0 unexpected, 0 invalid; 0 recovered comparison error slots and 0 unresolved comparison error slots.

Objective completion gate: not enabled. Aggregate completion transitions are telemetry only, so this report does not claim that zero objective regressions were proven.

A result passes only when preference-eligible distinct-stimulus votes have aggregate net win of at least 20% and an exact one-sided sign-test result of p ≤ 0.05, and every explicit dormancy activation contract passes. Repeated runs measure reliability only.

Target Model Verdict Gate evidence Overfit Warnings Next action
csharp-refactoring claude-sonnet-5 ✅ Improved n=17; 11W/5T/1L; d=12; p=0.003; net +58.8%; 1 dormancy excluded 🟡 0.41 Activation: isolated 12/17; plugin 15/17 Fix activation gaps; Review overfit evidence.
csharp-refactoring gpt-5.6-luna ✅ Improved n=17; 8W/9T/0L; d=8; p=0.004; net +47.1%; 1 dormancy excluded ✅ 0.18 — None.
ℹ️ How to read this report
  • ✅ Improved — the result passed both the statistical gate and the 20% practical net-win floor.
  • ➖ Not proven improved — the result is valid but did not pass both gates. This is not automatically a regression.
  • ⚠️ Invalid / underpowered — the gate withheld a quality verdict. Fix the measurement before judging the target.
  • ⛔ Activation contract failed — the isolated target activated on an explicit dormancy scenario. Dormancy preference is excluded, but this routing failure still blocks a pass.
  • 📉 Preference loss — the LLM judge credibly preferred baseline. It is report-only, not objective completion proof.
  • Gate evidence — n preference-eligible distinct-stimulus votes, W/T/L stimulus votes, d discordant votes, exact one-sided p, net win, and the count of separately retained dormancy stimuli. The p value applies to one model/target result; no matrix-wide multiple-comparison correction is applied.
  • Overfit — overfitting-judge severity (✅ Low, 🟡 Moderate, 🔴 High, — none) and score.
  • Warnings — activation, timeout, retry recovery, or unresolved comparison conditions that need attention.
  • Do not add repeated runs to increase statistical power. Do not add stimuli after seeing a near-pass unless the new breadth is predeclared for a new experiment.
✅ Improved — csharp-refactoring (claude-sonnet-5)

Why: Net win +58.8% (11W/5T/1L over 17 preference-eligible stimulus vote(s), sign test p=0.003), mean preference +38.9% across 18 paired run(s), 1 dormancy stimulus/stimuli excluded from preference — credibly better

Next action: Fix activation gaps; Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=17; 11W/5T/1L; d=12; p=0.003; net +58.8%; 1 dormancy excluded

Warnings: Activation: isolated 12/17; plugin 15/17

Overfit: Moderate (score 0.41)

Repeated-run reliability (not used by the gate): 18 paired runs (11W/6T/1L).

Weak or warning scenarios:

Scenario Preference gate Net win Δ Pref Runs (W/T/L)
▲ Consolidate duplicate public helpers without breaking shipped callers Eligible +100.0% +100.0% 1/0/0
▲ Decline a framework and package upgrade dressed up as a refactor Eligible +100.0% +100.0% 1/0/0
= Merge two near-identical types into one parameterized type Eligible +0.0% +0.0% 0/1/0
= Preserve a shipped wrapper while inlining ordinary callers Eligible +0.0% +0.0% 0/1/0
= Rename a helper used in every target-framework branch Eligible +0.0% +0.0% 0/1/0
▼ Rename a member declared by a generated partial source Eligible -100.0% -40.0% 0/0/1
= Rename a method without breaking a configured reflection name Eligible +0.0% +0.0% 0/1/0
= Rename one binding without touching same-text symbols Eligible +0.0% +0.0% 0/1/0
= Stay dormant for an ordinary feature request Excluded (activation contract) +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Merge two near-identical types into one parameterized type: Position-swap inconsistent (forward: B, reverse: tie). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

Routine passing details for 1 result are in Full Results.

🔍 Full Results - all metrics and investigation details

Correct the judge-comparison label and remove stale dotnet-breaking-changes registry entries left by the rebase.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8c45529b-2515-483d-9e51-e6c0b7cb6852

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

Unresolved findings cover inaccurate skill scope, an untested target-discovery path, and missing explicit build assertions.

Review tier: Lite
Findings: None

Resolved since last review (2)

@github-actions

Copy link
Copy Markdown
Contributor

📊 Skill and Agent Evaluation Results

2 model/target results across 1 target and 2 models — ✅ 2 improved, ➖ 0 not proven improved, ⚠️ 0 invalid or underpowered, ⛔ 0 activation contract failures, 📉 0 preference losses (report only).

Measurement identity: evaluated commit f4f0ed317a1315ddcde48092b5100cf57b2362f5; 2 judge models.

Measurement health: 2 expected / 2 observed / 2 written; 0 missing, 0 unexpected, 0 invalid; 0 recovered comparison error slots and 0 unresolved comparison error slots.

Objective completion gate: not enabled. Aggregate completion transitions are telemetry only, so this report does not claim that zero objective regressions were proven.

A result passes only when preference-eligible distinct-stimulus votes have aggregate net win of at least 20% and an exact one-sided sign-test result of p ≤ 0.05, and every explicit dormancy activation contract passes. Repeated runs measure reliability only.

Target Model Verdict Gate evidence Overfit Warnings Next action
csharp-refactoring claude-sonnet-5 ✅ Improved n=17; 12W/4T/1L; d=13; p=0.002; net +64.7%; 1 dormancy excluded 🟡 0.41 Activation: isolated 14/17; plugin 13/17 Fix activation gaps; Review overfit evidence.
csharp-refactoring gpt-5.6-luna ✅ Improved n=17; 7W/9T/1L; d=8; p=0.035; net +35.3%; 1 dormancy excluded 🟡 0.22 — Review overfit evidence.
ℹ️ How to read this report
  • ✅ Improved — the result passed both the statistical gate and the 20% practical net-win floor.
  • ➖ Not proven improved — the result is valid but did not pass both gates. This is not automatically a regression.
  • ⚠️ Invalid / underpowered — the gate withheld a quality verdict. Fix the measurement before judging the target.
  • ⛔ Activation contract failed — the isolated target activated on an explicit dormancy scenario. Dormancy preference is excluded, but this routing failure still blocks a pass.
  • 📉 Preference loss — the LLM judge credibly preferred baseline. It is report-only, not objective completion proof.
  • Gate evidence — n preference-eligible distinct-stimulus votes, W/T/L stimulus votes, d discordant votes, exact one-sided p, net win, and the count of separately retained dormancy stimuli. The p value applies to one model/target result; no matrix-wide multiple-comparison correction is applied.
  • Overfit — overfitting-judge severity (✅ Low, 🟡 Moderate, 🔴 High, — none) and score.
  • Warnings — activation, timeout, retry recovery, or unresolved comparison conditions that need attention.
  • Do not add repeated runs to increase statistical power. Do not add stimuli after seeing a near-pass unless the new breadth is predeclared for a new experiment.
✅ Improved — csharp-refactoring (claude-sonnet-5)

Why: Net win +64.7% (12W/4T/1L over 17 preference-eligible stimulus vote(s), sign test p=0.002), mean preference +34.4% across 18 paired run(s), 1 dormancy stimulus/stimuli excluded from preference — credibly better

Next action: Fix activation gaps; Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=17; 12W/4T/1L; d=13; p=0.002; net +64.7%; 1 dormancy excluded

Warnings: Activation: isolated 14/17; plugin 13/17

Overfit: Moderate (score 0.41)

Repeated-run reliability (not used by the gate): 18 paired runs (12W/5T/1L).

Weak or warning scenarios:

Scenario Preference gate Net win Δ Pref Runs (W/T/L)
= Extract shared discount logic without collapsing distinct inputs Eligible +0.0% +0.0% 0/1/0
= Keep a shipped nullable contract out of a refactor Eligible +0.0% +0.0% 0/1/0
= Preserve a serialized name while renaming a C# property Eligible +0.0% +0.0% 0/1/0
▼ Preserve a shipped wrapper while inlining ordinary callers Eligible -100.0% -100.0% 0/0/1
▲ Rename a helper used in every target-framework branch Eligible +100.0% +40.0% 1/0/0
▲ Rename a member declared by a generated partial source Eligible +100.0% +40.0% 1/0/0
▲ Rename a method without breaking a configured reflection name Eligible +100.0% +40.0% 1/0/0
= Rename a shipped public method without breaking existing callers Eligible +0.0% +0.0% 0/1/0
= Stay dormant for an ordinary feature request Excluded (activation contract) +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Extract shared discount logic without collapsing distinct inputs: Position-swap inconsistent (forward: tie, reverse: A). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — csharp-refactoring (gpt-5.6-luna)

Why: Net win +35.3% (7W/9T/1L over 17 preference-eligible stimulus vote(s), sign test p=0.035), mean preference +23.3% across 18 paired run(s), 1 dormancy stimulus/stimuli excluded from preference — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=17; 7W/9T/1L; d=8; p=0.035; net +35.3%; 1 dormancy excluded

Overfit: Moderate (score 0.22)

Repeated-run reliability (not used by the gate): 18 paired runs (7W/10T/1L).

Weak or warning scenarios:

Scenario Preference gate Net win Δ Pref Runs (W/T/L)
= Consolidate duplicate public helpers without breaking shipped callers Eligible +0.0% +0.0% 0/1/0
= Extract subtotal calculation without changing arithmetic Eligible +0.0% +0.0% 0/1/0
= Inline a pass-through wrapper and update callers Eligible +0.0% +0.0% 0/1/0
▼ Merge two near-identical types into one parameterized type Eligible -100.0% -100.0% 0/0/1
= Preserve a serialized name while renaming a C# property Eligible +0.0% +0.0% 0/1/0
= Preserve a shipped wrapper while inlining ordinary callers Eligible +0.0% +0.0% 0/1/0
= Rename a member declared by a generated partial source Eligible +0.0% +0.0% 0/1/0
= Rename a method without breaking a configured reflection name Eligible +0.0% +0.0% 0/1/0
= Rename an internal member used by a friend assembly Eligible +0.0% +0.0% 0/1/0
= Rename one binding without touching same-text symbols Eligible +0.0% +0.0% 0/1/0
= Stay dormant for an ordinary feature request Excluded (activation contract) +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Consolidate duplicate public helpers without breaking shipped callers: Position-swap inconsistent (forward: B, reverse: tie). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

🔍 Full Results - all metrics and investigation details

@github-actions

Copy link
Copy Markdown
Contributor

✅ Evaluation passed for f4f0ed3. cc @webreidi @AbhitejJohn @JanKrivanek — please review.

@github-actions

Copy link
Copy Markdown
Contributor

📊 Skill and Agent Evaluation Results

6 model/target results across 1 target and 6 models — ✅ 4 improved, ➖ 2 not proven improved, ⚠️ 0 invalid or underpowered, ⛔ 0 activation contract failures, 📉 0 preference losses (report only).

Measurement identity: evaluated commit f4f0ed317a1315ddcde48092b5100cf57b2362f5; 2 judge models.

Measurement health: 6 expected / 6 observed / 6 written; 0 missing, 0 unexpected, 0 invalid; 0 recovered comparison error slots and 0 unresolved comparison error slots.

Objective completion gate: not enabled. Aggregate completion transitions are telemetry only, so this report does not claim that zero objective regressions were proven.

A result passes only when preference-eligible distinct-stimulus votes have aggregate net win of at least 20% and an exact one-sided sign-test result of p ≤ 0.05, and every explicit dormancy activation contract passes. Repeated runs measure reliability only.

Target Model Verdict Gate evidence Overfit Warnings Next action
csharp-refactoring claude-haiku-4.5 ✅ Improved n=17; 5W/12T/0L; d=5; p=0.031; net +29.4%; 1 dormancy excluded 🟡 0.41 Activation: isolated 12/17; plugin 14/17 Fix activation gaps; Review overfit evidence.
csharp-refactoring claude-opus-4.8 ✅ Improved n=17; 10W/7T/0L; d=10; p=0.001; net +58.8%; 1 dormancy excluded 🟡 0.50 Activation: isolated 14/17; plugin 16/17 Fix activation gaps; Review overfit evidence.
csharp-refactoring claude-sonnet-5 ✅ Improved n=17; 14W/3T/0L; d=14; p=0.000; net +82.4%; 1 dormancy excluded 🟡 0.48 Activation: isolated 15/17; plugin 13/17 Fix activation gaps; Review overfit evidence.
csharp-refactoring gpt-5.3-codex ➖ Not proven improved n=17; 7W/6T/4L; d=11; p=0.274; net +17.6%; 1 dormancy excluded ✅ 0.19 Activation: isolated 7/17; plugin 8/17; Activation-only stop: isolated 1 failed run; Activation-only stop: plugin 2 failed runs Inspect activation-only failed runs before rewriting skill content; the model stopped after loading a skill.
csharp-refactoring gpt-5.6-luna ✅ Improved n=17; 8W/8T/1L; d=9; p=0.020; net +41.2%; 1 dormancy excluded ✅ 0.17 — None.
csharp-refactoring mai-code-1.1-flash ➖ Not proven improved n=17; 4W/11T/2L; d=6; p=0.344; net +11.8%; 1 dormancy excluded 🟡 0.31 Activation: isolated 2/17; plugin 0/17 Inspect tied or lost stimuli and fix inconsistent skill behavior.
ℹ️ How to read this report
  • ✅ Improved — the result passed both the statistical gate and the 20% practical net-win floor.
  • ➖ Not proven improved — the result is valid but did not pass both gates. This is not automatically a regression.
  • ⚠️ Invalid / underpowered — the gate withheld a quality verdict. Fix the measurement before judging the target.
  • ⛔ Activation contract failed — the isolated target activated on an explicit dormancy scenario. Dormancy preference is excluded, but this routing failure still blocks a pass.
  • 📉 Preference loss — the LLM judge credibly preferred baseline. It is report-only, not objective completion proof.
  • Gate evidence — n preference-eligible distinct-stimulus votes, W/T/L stimulus votes, d discordant votes, exact one-sided p, net win, and the count of separately retained dormancy stimuli. The p value applies to one model/target result; no matrix-wide multiple-comparison correction is applied.
  • Overfit — overfitting-judge severity (✅ Low, 🟡 Moderate, 🔴 High, — none) and score.
  • Warnings — activation, timeout, retry recovery, or unresolved comparison conditions that need attention.
  • Do not add repeated runs to increase statistical power. Do not add stimuli after seeing a near-pass unless the new breadth is predeclared for a new experiment.
➖ Not proven improved — csharp-refactoring (gpt-5.3-codex)

Why: Net win +17.6% (7W/6T/4L over 17 preference-eligible stimulus vote(s), sign test p=0.274), mean preference +6.7% across 18 paired run(s), 1 dormancy stimulus/stimuli excluded from preference — not credible (sign test p=0.274 > 0.05)

Next action: Inspect activation-only failed runs before rewriting skill content; the model stopped after loading a skill.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=17; 7W/6T/4L; d=11; p=0.274; net +17.6%; 1 dormancy excluded

Warnings: Activation: isolated 7/17; plugin 8/17; Activation-only stop: isolated 1 failed run; Activation-only stop: plugin 2 failed runs

Overfit: Low (score 0.19)

Repeated-run reliability (not used by the gate): 18 paired runs (7W/7T/4L).

Weak or warning scenarios:

Scenario Preference gate Net win Δ Pref Runs (W/T/L)
▲ Consolidate duplicate public helpers without breaking shipped callers Eligible +100.0% +40.0% 1/0/0
▲ Decline a framework and package upgrade dressed up as a refactor Eligible +100.0% +100.0% 1/0/0
= Extract shared discount logic without collapsing distinct inputs Eligible +0.0% +0.0% 0/1/0
▼ Extract subtotal calculation without changing arithmetic Eligible -100.0% -100.0% 0/0/1
= Inline a pass-through wrapper and update callers Eligible +0.0% +0.0% 0/1/0
= Keep a shipped nullable contract out of a refactor Eligible +0.0% +0.0% 0/1/0
▲ Keep behavior-changing bug fixes out of a behavior-preserving refactor Eligible +100.0% +100.0% 1/0/0
= Merge two near-identical types into one parameterized type Eligible +0.0% +0.0% 0/1/0
▼ Preserve a shipped wrapper while inlining ordinary callers Eligible -100.0% -40.0% 0/0/1
= Rename a helper used in every target-framework branch Eligible +0.0% +0.0% 0/1/0
▼ Rename a member declared by a generated partial source Eligible -100.0% -100.0% 0/0/1
= Rename a method without breaking a configured reflection name Eligible +0.0% +0.0% 0/1/0
▼ Rename an internal member used by a friend assembly Eligible -100.0% -100.0% 0/0/1
▲ Rename one binding without touching same-text symbols Eligible +100.0% +40.0% 1/0/0
= Stay dormant for an ordinary feature request Excluded (activation contract) +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Extract shared discount logic without collapsing distinct inputs: Position-swap inconsistent (forward: tie, reverse: B). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — csharp-refactoring (mai-code-1.1-flash)

Why: Net win +11.8% (4W/11T/2L over 17 preference-eligible stimulus vote(s), sign test p=0.344), mean preference +10.0% across 18 paired run(s), 1 dormancy stimulus/stimuli excluded from preference — not credible (sign test p=0.344 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=17; 4W/11T/2L; d=6; p=0.344; net +11.8%; 1 dormancy excluded

Warnings: Activation: isolated 2/17; plugin 0/17

Overfit: Moderate (score 0.31)

Repeated-run reliability (not used by the gate): 18 paired runs (5W/11T/2L).

Weak or warning scenarios:

Scenario Preference gate Net win Δ Pref Runs (W/T/L)
▲ Consolidate duplicate public helpers without breaking shipped callers Eligible +100.0% +40.0% 1/0/0
= Decline a framework and package upgrade dressed up as a refactor Eligible +0.0% +0.0% 0/1/0
= Decline a new-feature request dressed up as a refactor Eligible +0.0% +0.0% 0/1/0
▲ Extract shared discount logic without collapsing distinct inputs Eligible +100.0% +40.0% 1/0/0
= Extract subtotal calculation without changing arithmetic Eligible +0.0% +0.0% 0/1/0
= Inline a pass-through wrapper and update callers Eligible +0.0% +0.0% 0/1/0
= Keep a shipped nullable contract out of a refactor Eligible +0.0% +0.0% 0/1/0
▲ Keep behavior-changing bug fixes out of a behavior-preserving refactor Eligible +100.0% +40.0% 1/0/0
= Merge two near-identical types into one parameterized type Eligible +0.0% +0.0% 0/1/0
= Preserve a serialized name while renaming a C# property Eligible +0.0% +0.0% 0/1/0
= Preserve a shipped wrapper while inlining ordinary callers Eligible +0.0% +0.0% 0/1/0
= Rename a helper used in every target-framework branch Eligible +0.0% +0.0% 0/1/0
= Rename a member declared by a generated partial source Eligible +0.0% +0.0% 0/1/0
▼ Rename a method without breaking a configured reflection name Eligible -100.0% -40.0% 0/0/1
= Rename a shipped public method without breaking existing callers Eligible +0.0% +0.0% 0/1/0
▲ Rename an internal member used by a friend assembly Eligible +100.0% +40.0% 1/0/0
▼ Rename one binding without touching same-text symbols Eligible -100.0% -40.0% 0/0/1

Illustrative judge evidence:

  • Decline a framework and package upgrade dressed up as a refactor: Position-swap inconsistent (forward: A, reverse: tie). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — csharp-refactoring (claude-haiku-4.5)

Why: Net win +29.4% (5W/12T/0L over 17 preference-eligible stimulus vote(s), sign test p=0.031), mean preference +15.6% across 18 paired run(s), 1 dormancy stimulus/stimuli excluded from preference — credibly better

Next action: Fix activation gaps; Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=17; 5W/12T/0L; d=5; p=0.031; net +29.4%; 1 dormancy excluded

Warnings: Activation: isolated 12/17; plugin 14/17

Overfit: Moderate (score 0.41)

Repeated-run reliability (not used by the gate): 18 paired runs (5W/12T/1L).

Weak or warning scenarios:

Scenario Preference gate Net win Δ Pref Runs (W/T/L)
= Consolidate duplicate public helpers without breaking shipped callers Eligible +0.0% +0.0% 0/1/0
= Extract shared discount logic without collapsing distinct inputs Eligible +0.0% +0.0% 0/1/0
= Extract subtotal calculation without changing arithmetic Eligible +0.0% +0.0% 0/1/0
= Inline a pass-through wrapper and update callers Eligible +0.0% +0.0% 0/1/0
▲ Keep a shipped nullable contract out of a refactor Eligible +100.0% +40.0% 1/0/0
= Keep behavior-changing bug fixes out of a behavior-preserving refactor Eligible +0.0% +0.0% 0/1/0
= Merge two near-identical types into one parameterized type Eligible +0.0% +0.0% 0/1/0
= Preserve a serialized name while renaming a C# property Eligible +0.0% +0.0% 0/1/0
= Preserve a shipped wrapper while inlining ordinary callers Eligible +0.0% +0.0% 0/1/0
▲ Rename a helper used in every target-framework branch Eligible +100.0% +40.0% 1/0/0
= Rename a method without breaking a configured reflection name Eligible +0.0% +0.0% 0/1/0
= Rename a shipped public method without breaking existing callers Eligible +0.0% +0.0% 0/1/0
= Rename an internal member used by a friend assembly Eligible +0.0% +0.0% 0/1/0
= Rename one binding without touching same-text symbols Eligible +0.0% +0.0% 0/1/0
▼ Stay dormant for an ordinary feature request Excluded (activation contract) -100.0% -40.0% 0/0/1

Illustrative judge evidence:

  • Consolidate duplicate public helpers without breaking shipped callers: Position-swap inconsistent (forward: tie, reverse: A). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — csharp-refactoring (claude-opus-4.8)

Why: Net win +58.8% (10W/7T/0L over 17 preference-eligible stimulus vote(s), sign test p=0.001), mean preference +38.9% across 18 paired run(s), 1 dormancy stimulus/stimuli excluded from preference — credibly better

Next action: Fix activation gaps; Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=17; 10W/7T/0L; d=10; p=0.001; net +58.8%; 1 dormancy excluded

Warnings: Activation: isolated 14/17; plugin 16/17

Overfit: Moderate (score 0.50)

Repeated-run reliability (not used by the gate): 18 paired runs (10W/8T/0L).

Weak or warning scenarios:

Scenario Preference gate Net win Δ Pref Runs (W/T/L)
▲ Decline a framework and package upgrade dressed up as a refactor Eligible +100.0% +100.0% 1/0/0
▲ Extract shared discount logic without collapsing distinct inputs Eligible +100.0% +40.0% 1/0/0
= Extract subtotal calculation without changing arithmetic Eligible +0.0% +0.0% 0/1/0
= Inline a pass-through wrapper and update callers Eligible +0.0% +0.0% 0/1/0
= Merge two near-identical types into one parameterized type Eligible +0.0% +0.0% 0/1/0
= Preserve a serialized name while renaming a C# property Eligible +0.0% +0.0% 0/1/0
= Rename a helper used in every target-framework branch Eligible +0.0% +0.0% 0/1/0
= Rename a member declared by a generated partial source Eligible +0.0% +0.0% 0/1/0
= Rename a method without breaking a configured reflection name Eligible +0.0% +0.0% 0/1/0
= Stay dormant for an ordinary feature request Excluded (activation contract) +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Extract subtotal calculation without changing arithmetic: Position-swap inconsistent (forward: B, reverse: tie). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — csharp-refactoring (claude-sonnet-5)

Why: Net win +82.4% (14W/3T/0L over 17 preference-eligible stimulus vote(s), sign test p=0.000), mean preference +47.8% across 18 paired run(s), 1 dormancy stimulus/stimuli excluded from preference — credibly better

Next action: Fix activation gaps; Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=17; 14W/3T/0L; d=14; p=0.000; net +82.4%; 1 dormancy excluded

Warnings: Activation: isolated 15/17; plugin 13/17

Overfit: Moderate (score 0.48)

Repeated-run reliability (not used by the gate): 18 paired runs (14W/4T/0L).

Weak or warning scenarios:

Scenario Preference gate Net win Δ Pref Runs (W/T/L)
= Consolidate duplicate public helpers without breaking shipped callers Eligible +0.0% +0.0% 0/1/0
▲ Decline a framework and package upgrade dressed up as a refactor Eligible +100.0% +100.0% 1/0/0
= Preserve a serialized name while renaming a C# property Eligible +0.0% +0.0% 0/1/0
▲ Preserve a shipped wrapper while inlining ordinary callers Eligible +100.0% +40.0% 1/0/0
▲ Rename a helper used in every target-framework branch Eligible +100.0% +40.0% 1/0/0
▲ Rename a method without breaking a configured reflection name Eligible +100.0% +40.0% 1/0/0
= Rename an internal member used by a friend assembly Eligible +0.0% +0.0% 0/1/0
= Stay dormant for an ordinary feature request Excluded (activation contract) +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Consolidate duplicate public helpers without breaking shipped callers: The substantive change and verification are equivalent and satisfy the task. B's final write-up is somewhat more detailed, but it does not establish a materially better implementation or validation result.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

Routine passing details for 1 result are in Full Results.

🔍 Full Results - all metrics and investigation details

To investigate non-passing or warning results, paste this to your AI coding agent:

For PR 873 in dotnet/skills, download eval artifacts with gh run download 35019805981 --repo dotnet/skills --pattern "vally-results-*" --dir ./eval-results, then fetch https://raw.githubusercontent.com/dotnet/skills/f4f0ed317a1315ddcde48092b5100cf57b2362f5/eng/vally-adapter/InvestigatingResults.md and follow it. Classify each result as measurement-invalid, underpowered, not-proven, preference-loss, or passing-with-warning. Use stateReason, result accounting, weak scenarios, and judge evidence to give the cause and exact next fix.

This branch was successfully deployed

1 active deployment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

waiting-on-review PR state label

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants